CREATE view DBO.TRB_IPTU_INADIMPLENTES_VI as
SELECT 
	  LGD_COD
	, LTM_COD
	, COUNT(*) AS QTD_LANCADO
	, SUM(IPT_VALOR_IPTU) AS VLR_LANCADO
	, SUM( CASE WHEN DBO.TRB_SITUACAO_LANCAMENTO_IPTU( U.TLA_COD ) IN (3, 4) THEN 1 ELSE 0 END ) AS QTD_ABERTO
	, SUM( CASE WHEN DBO.TRB_SITUACAO_LANCAMENTO_IPTU( U.TLA_COD ) IN (3, 4) THEN U.IPT_VALOR_IPTU ELSE 0 END ) AS VLR_ABERTO_VALOR
	, SUM( T.IIR_VALOR ) AS VLR_ABERTO_TUSP
	, SUM( S.IIR_VALOR ) AS VLR_ABERTO_SA
	FROM TRB_IMOVEL I
	JOIN TRB_IPTU U ON U.IMV_COD = I.IMV_COD
	LEFT JOIN TRB_TAXA_IPTU_ABERTO_VI T ON T.TLA_COD = U.TLA_COD AND T.PLA_COD = 266958
	LEFT JOIN TRB_TAXA_IPTU_ABERTO_VI S ON S.TLA_COD = U.TLA_COD AND S.PLA_COD = 266986
	WHERE LGD_COD BETWEEN 40005 AND 40005
	GROUP BY LGD_COD, LTM_COD
GO

-- Calcula Taxas em Aberto para IPTU - Demais Parcelas
CREATE VIEW dbo.TRB_TAXA_IPTU_ABERTO_VI AS
SELECT 
	TLA_COD
	, PLA_COD
	, ( CASE WHEN A.PLA_COD = 266986 THEN 'TUSP' ELSE 'S.A.' END) AS IIR_TIPO
	, SUM(IIR_VALOR) AS IIR_VALOR
	FROM TRB_IPTU_TAXA A 
	WHERE -- A.TLA_COD= 1072750 AND --A.PLA_COD = 266986 -- TESTE		
		NOT EXISTS ( SELECT 1 FROM TRB_LANCAMENTO L JOIN TRB_BAIXA B ON B.LAN_COD = L.LAN_COD WHERE L.TLA_COD = A.TLA_COD AND LAN_PARCELA = 0 )
		AND IIR_PARCELA > 0 
		AND IIR_PARCELA NOT IN (SELECT LAN_PARCELA FROM TRB_LANCAMENTO L JOIN TRB_IPTU I ON I.TLA_COD = L.TLA_COD 
					JOIN TRB_BAIXA B ON B.LAN_COD = L.LAN_COD WHERE L.TLA_COD = A.TLA_COD)
	GROUP BY TLA_COD, PLA_COD
GO

CREATE FUNCTION DBO.TRB_SITUACAO_LANCAMENTO_IPTU (@TLA_COD BIGINT) RETURNS INT
AS
BEGIN
	DECLARE
	@SAIDA         INT,
	@NR_PARCELAS   INT,
	@PAGOU_UNICA   INT,
	@PAGOU_PARCELA INT
	
	SET @PAGOU_UNICA = ( SELECT COUNT(*) FROM TRB_LANCAMENTO WHERE TLA_COD = @TLA_COD AND LAN_PARCELA = 0 AND 
				LAN_COD IN (SELECT LAN_COD FROM TRB_BAIXA WHERE (BXA_SITUACAO = 'N' OR BXA_SITUACAO IS NULL) ) )
	IF (@PAGOU_UNICA > 0)
		SET @SAIDA = 1
	ELSE
	BEGIN
		SET @NR_PARCELAS   = (SELECT COUNT(*) FROM TRB_LANCAMENTO WHERE TLA_COD = @TLA_COD AND LAN_PARCELA > 0)
		SET @SAIDA = 4
		IF (@PAGOU_PARCELA < @NR_PARCELAS) AND (@PAGOU_PARCELA > 0)
			SET @SAIDA = 3
		ELSE
		BEGIN
			SET @PAGOU_PARCELA = (SELECT COUNT(*) FROM TRB_LANCAMENTO WHERE TLA_COD = @TLA_COD AND LAN_PARCELA > 0 AND LAN_COD IN (SELECT LAN_COD FROM TRB_BAIXA WHERE (BXA_SITUACAO = 'N' OR BXA_SITUACAO IS NULL)))
			IF (@PAGOU_PARCELA = @NR_PARCELAS) AND (@PAGOU_PARCELA > 0)
				SET @SAIDA = 2
		END
	END
	RETURN @SAIDA
	
	--@SAIDA:
	--  1 - PAGOU UNICA              - QUITADO
	--  2 - PAGOU TODAS AS PARCELAS  - QUITADO
	--  3 - PAGOU ALGUMAS PARCELAS   - EM ABERTO
	--  4 - TUDO EM ABERTO           - EM ABERTO
END
GO